import axios from 'axios'
import { ElMessage } from 'element-plus'

// 创建axios实例
const request = axios.create({
  baseURL: '/api',
  timeout: 10000
})

// 请求拦截器
request.interceptors.request.use(
  config => {
    // 非登录请求添加token
    const token = localStorage.getItem('token')
    if (token) {
      config.headers.token = token
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
request.interceptors.response.use(
  response => {
    const res = response.data
    if (res.code === 1 || res.code === 0 || res.code === 200) {
      return res
    }
    
    ElMessage.error(res.msg || '请求失败')
    return Promise.reject(new Error(res.msg || '请求失败'))
  },
  error => {
    const msg = error.response?.data?.msg || error.message || '网络请求失败'
    ElMessage.error(msg)
    
    if (error.response?.status === 401) {
      localStorage.removeItem('token')
      location.href = '/login'
    }
    
    return Promise.reject(error)
  }
)

/**
 * 分类模块API
 */
export default {
  /**
   * 修改分类
   * @param {Object} data 分类信息
   */
  updateCategory(data) {
    return request({
      url: '/admin/category',
      method: 'put',
      data
    })
  },

  /**
   * 分类分页查询
   * @param {Object} params 查询参数
   * @param {string} [params.name] 分类名称，可选
   * @param {number} params.page 页码
   * @param {number} params.pageSize 每页记录数
   * @param {number} [params.type] 分类类型：1为菜品分类，2为套餐分类，可选
   */
  getCategoryPage(params) {
    return request({
      url: '/admin/category/page',
      method: 'get',
      params
    })
  },

  /**
   * 启用、禁用分类
   * @param {number} id 分类id
   * @param {number} status 状态，1为启用，0为禁用
   */
  updateStatus(id, status) {
    return request({
      url: `/admin/category/status/${status}`,
      method: 'post',
      params: { id }
    })
  },

  /**
   * 新增分类
   * @param {Object} data 分类信息
   */
  addCategory(data) {
    return request({
      url: '/admin/category',
      method: 'post',
      data
    })
  },

  /**
   * 根据id删除分类
   * @param {number} id 分类id
   */
  deleteCategory(id) {
    return request({
      url: '/admin/category',
      method: 'delete',
      params: { id }
    })
  },

  /**
   * 根据类型查询分类
   * @param {number} type 分类类型：1为菜品分类，2为套餐分类
   */
  getCategoryList(type) {
    return request({
      url: '/admin/category/list',
      method: 'get',
      params: { type }
    })
  }
} 